using System;
using System.Collections;

namespace Northwind.DataAccess
{
	
	public abstract class Customer
	{
	
		public System.String CustomerID
		{
			get { return this.m_CustomerID; }
			set { this.m_CustomerID = value; }
		}

		public System.String CompanyName
		{
			get { return this.m_CompanyName; }
			set { this.m_CompanyName = value; }
		}

		public System.String ContactName
		{
			get { return this.m_ContactName; }
			set { this.m_ContactName = value; }
		}

		public System.String ContactTitle
		{
			get { return this.m_ContactTitle; }
			set { this.m_ContactTitle = value; }
		}

		public System.String Address
		{
			get { return this.m_Address; }
			set { this.m_Address = value; }
		}

		public System.String City
		{
			get { return this.m_City; }
			set { this.m_City = value; }
		}

		public System.String Region
		{
			get { return this.m_Region; }
			set { this.m_Region = value; }
		}

		public System.String PostalCode
		{
			get { return this.m_PostalCode; }
			set { this.m_PostalCode = value; }
		}

		public System.String Country
		{
			get { return this.m_Country; }
			set { this.m_Country = value; }
		}

		public System.String Phone
		{
			get { return this.m_Phone; }
			set { this.m_Phone = value; }
		}

		public System.String Fax
		{
			get { return this.m_Fax; }
			set { this.m_Fax = value; }
		}

		public IList/*Northwind.DataAccess.CustomerDemographic */ CustomerTypes
		{
			get { return this.m_CustomerTypes; }
		}

		protected void OnCreate(object[] args)
		{
			this.CustomerID = (string)args[0];
		}
		
//		protected void OnMaterialize()
//		{
//		}
		
//		protected void OnValidate()
//		{
//		}
		
		protected abstract System.String m_CustomerID { get; set; }

		protected abstract System.String m_CompanyName { get; set; }

		protected abstract System.String m_ContactName { get; set; }

		protected abstract System.String m_ContactTitle { get; set; }

		protected abstract System.String m_Address { get; set; }

		protected abstract System.String m_City { get; set; }

		protected abstract System.String m_Region { get; set; }

		protected abstract System.String m_PostalCode { get; set; }

		protected abstract System.String m_Country { get; set; }

		protected abstract System.String m_Phone { get; set; }

		protected abstract System.String m_Fax { get; set; }

		protected abstract IList m_CustomerTypes { get; }

	}
}
